package main

import "fmt"

type Phone interface {
	call()
}

type xiaoMi struct {
	name string
}

//实现接口的call方法
func (this xiaoMi) call() {
	fmt.Println(this.name, " 打电话")
}

//给结构体xiaoMi，增加了另一个方法，注意这个方法不属于接口 Phone
func (this xiaoMi) sendWechat() {
	fmt.Println(this.name, " 可以发微信")
}

func main() {
	var phone Phone                //定义了一个 Phone 接口类型的 phone 对象
	phone = xiaoMi{name: "小米Mix3"} //该对象的内容是xiaoMi的结构体。（个人理解像是实例化）
	phone.call()                   //调用接口中的方法，没问题

	phone.sendWechat() //接口中不存在此方法，报错。原因很明显，因为我们的phone对象【显示声明】为 Phone 接口类型，因此 phone调用的方法会受到此接口的限制。

	//这样是没问题的
	mi := xiaoMi{name: "小米11"}
	mi.sendWechat()

}
